package com.enzo.prms.common.util;

import java.util.StringTokenizer;
import java.util.UUID;

import org.apache.commons.lang.xwork.math.RandomUtils;

public class StringUtil {
	public static boolean isBlank(String str) {
		int strLen;
		if (str == null || (strLen = str.length()) == 0)
			return true;
		for (int i = 0; i < strLen; i++)
			if (!Character.isWhitespace(str.charAt(i)))
				return false;

		return true;
	}

	public static boolean isEmpty(String str) {
		return str == null || str.length() == 0;
	}

	public static boolean isNotBlank(String str) {
		int strLen;
		if (str == null || (strLen = str.length()) == 0)
			return false;
		for (int i = 0; i < strLen; i++)
			if (!Character.isWhitespace(str.charAt(i)))
				return true;

		return false;
	}

	public static boolean isNotEmpty(String str) {
		return str != null && str.length() > 0;
	}

	/**
     * 产生UUID。
     * 
     * @return
     */
    public static String generateUUID() {
            UUID uuid = UUID.randomUUID();
            return uuid.toString().toUpperCase();
    }


	/**
	 * 解析一个带 token 分隔符的字符串，这个方法的效率比直接调用String的split()方法快大约1倍。
	 * 
	 * @param tokenedStr
	 * @param token
	 * @return String[]
	 */
	public static String[] splitString(String tokenedStr, String token) {
		String[] ids = null;
		if (tokenedStr != null) {
			StringTokenizer st = new StringTokenizer(tokenedStr, token);
			final int arraySize = st.countTokens();
			if (arraySize > 0) {
				ids = new String[arraySize];
				int counter = 0;
				while (st.hasMoreTokens()) {
					ids[counter++] = st.nextToken();
				}
			}
		}
		return ids;
	}
	
	/**
	 * 把字符串数组组合成一个以指定分隔符分隔的字符串。
	 * 
	 * @param strs 字符串数组
	 * @param seperator 分隔符
	 * @return
	 */
	public static String mergeString(String[] strs, String seperator) {
		StringBuilder sb = new StringBuilder();
		mergeString(strs, seperator, sb);
		return sb.toString();
	}

	/**
	 * 把字符串数组组合成一个以指定分隔符分隔的字符串，并追加到给定的<code>StringBuilder</code>
	 * 
	 * @param strs 字符串数组
	 * @param seperator 分隔符
	 * @return
	 */
	public static void mergeString(String[] strs, String seperator,
			StringBuilder sb) {
		for (int i = 0; i < strs.length; i++) {
			if (i != 0) {
				sb.append(seperator);
			}
			sb.append(strs[i]);
		}
	}
	
	/**
     * 返回指定长度的随机的数字字符串。
     * 
     * @param length
     * @return
     */
    public static String getRandomNumber(int length) {
            String ret = "";
            for (int i = 0; i < length; i++) {
                    ret += RandomUtils.nextInt(9);
            }
            return ret;
    }

}
